package com.byt.framlib.commonutils;

import android.text.TextUtils;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat;

/**
 * des:金钱的格式化
 * 直接调用
 */
public class MoneyUtil {


    public static String setThousand(long point) {
        if (point > 10000) {
            return String.valueOf(point / 10000) + "w+";
        } else {
            return String.valueOf(point);
        }
    }

    public static String setCourseCurrency(float point) {
        if (point >= 10000) {
            return new DecimalFormat("0.00").format(point / 10000) + "w+";
        } else {
            return new DecimalFormat("0.00").format(point);
        }
    }

    public static String MoneyFomatWithTwoPoint(double d) {
        BigDecimal b = new BigDecimal(d);
        double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
        DecimalFormat df = new DecimalFormat("0.00");
        return df.format(f1);
    }

    public static String MoneyFomatWithOnePoint(double d) {
        BigDecimal b = new BigDecimal(d);
        double f1 = b.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
        DecimalFormat df = new DecimalFormat("0.0");
        return df.format(f1);
    }


    public static int MoneyFomatInt(String d) {
        if (!TextUtils.isEmpty(d)) {
            if (d.contains(".")) {
                d = d.substring(0, d.indexOf("."));
            }
            return Integer.parseInt(d);
        } else {
            return 0;
        }
    }

    public static String formatPercent(double percent) {
        //获取格式化对象
        NumberFormat nt = NumberFormat.getPercentInstance();
        //设置百分数精确度2即保留两位小数
        nt.setMinimumFractionDigits(2);
        //最后格式化并输出
        System.out.println("百分数：" + nt.format(percent));
        return nt.format(percent);
    }

    public static String formatNum(double percent) {
        //获取格式化对象
        NumberFormat nt = NumberFormat.getPercentInstance();
        //设置百分数精确度2即保留两位小数
        nt.setMinimumFractionDigits(0);
        //最后格式化并输出
        System.out.println("百分数：" + nt.format(percent));
        return nt.format(percent);
    }

    /**
     * 添加数值千分符
     *
     * @param price 数值
     * @return 千分符字符串
     */
    public static String formatPrice(float price) {
        DecimalFormat demo = new DecimalFormat("#,##0.00");
        return "¥" + demo.format(price);
    }

    /**
     * 提供精确加法计算的add方法
     *
     * @param value1 被加数
     * @param value2 加数
     * @return 两个参数的和
     */
    public static String add(String value1, String value2) {
        BigDecimal b1 = new BigDecimal(value1).setScale(2,BigDecimal.ROUND_HALF_UP);
        BigDecimal b2 = new BigDecimal(value2).setScale(2,BigDecimal.ROUND_HALF_UP);
        double tempData = b1.add(b2).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
        return String.valueOf(tempData);
    }

    /**
     * 提供精确减法运算的sub方法
     *
     * @param value1 被减数
     * @param value2 减数
     * @return 两个参数的差
     */
    public static String sub(String value1, String value2) {
        BigDecimal b1 = new BigDecimal(value1).setScale(2,BigDecimal.ROUND_HALF_UP);
        BigDecimal b2 = new BigDecimal(value2).setScale(2,BigDecimal.ROUND_HALF_UP);
        return  String.valueOf(b1.subtract(b2).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue());
    }

    /**
     * 提供精确乘法运算的mul方法
     *
     * @param value1 被乘数
     * @param value2 乘数
     * @return 两个参数的积
     */
    public static String mul(String value1, String value2) {
        BigDecimal b1 = new BigDecimal(value1).setScale(2,BigDecimal.ROUND_HALF_UP);
        BigDecimal b2 = new BigDecimal(value2).setScale(2,BigDecimal.ROUND_HALF_UP);
        return  String.valueOf(b1.multiply(b2).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue());
    }

    /**
     * 提供精确的除法运算方法div
     *
     * @param value1 被除数
     * @param value2 除数
     * @param scale  精确范围
     * @return 两个参数的商
     * @throws IllegalAccessException
     */
    public static String div(String value1, String value2, int scale) throws IllegalAccessException {
        //如果精确范围小于0，抛出异常信息
        if (scale < 0) {
            throw new IllegalAccessException("精确度不能小于0");
        }
        BigDecimal b1 = new BigDecimal(value1).setScale(2,BigDecimal.ROUND_HALF_UP);
        BigDecimal b2 = new BigDecimal(value2).setScale(2,BigDecimal.ROUND_HALF_UP);
        return String.valueOf(b1.divide(b2, scale).doubleValue());
    }
}